﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace BBMS.FrontEnd.WinClient
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            this.Font = SystemFonts.MessageBoxFont;
            Splasher.Status = "Đang khởi động ...";

            InitializeComponent();

            System.Threading.Thread.Sleep(1000);
            Splasher.Status = "Done";
            Splasher.Close();
            InitMenu();

        }

        public void InitMenu()
        {
            ToolStripMenuItem tsmi1 = (ToolStripMenuItem)this.menuStrip1.Items[1];
            for (int j = 2; j < tsmi1.DropDownItems.Count-1; j++)
            {
                tsmi1.DropDownItems[j].Visible = false;

            }
            for (int i = 2; i <= 6; i++)
            {
                this.menuStrip1.Items[i].Visible = false;
                ToolStripMenuItem tsmi = (ToolStripMenuItem)this.menuStrip1.Items[i];
                for (int j = 0; j < tsmi.DropDownItems.Count; j++)
                {
                    tsmi.DropDownItems[j].Visible = false;

                }
            }
        }

        private void thoatToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void danhMucCongTyThuHoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Catalog.Company.FrmCompanyFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.Company.FrmCompanyFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.Company.FrmCompanyFilter frmNew = new BBMS.DLL.Forms.Catalog.Company.FrmCompanyFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void dangnhapToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.SystemHelper.IsLogined)
            {
                BBMS.DLL.Base.SystemHelper.DoLogout();
                if (!BBMS.DLL.Base.SystemHelper.IsLogined)
                    dangnhapToolStripMenuItem.Text = "Đăng &nhập";

                BBMS.DLL.Forms.frmBackup frmNew = new BBMS.DLL.Forms.frmBackup();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.frmUserAuthentication)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.frmUserAuthentication frmNew = new BBMS.DLL.Forms.frmUserAuthentication();
               // frmNew.MdiParent = this;
                //frmNew.Show();
                DialogResult dr = frmNew.ShowDialog();
                if (dr == DialogResult.OK) 
                {
                    GetMenu();
                };
                BBMS.DLL.Base.SystemHelper.DoLogin();
                if (BBMS.DLL.Base.SystemHelper.IsLogined)
                    dangnhapToolStripMenuItem.Text = "Đăng &xuất";
            }
        }

        public void GetMenu()
        {
            ToolStripMenuItem tsmi1 = (ToolStripMenuItem)this.menuStrip1.Items[1];
            for (int j = 2; j < tsmi1.DropDownItems.Count - 1; j++)
                if (tsmi1.DropDownItems[j].Tag == null)
                {
                    tsmi1.DropDownItems[j].Visible = true;
                    //tsmi1.DropDownItems[j].Tag.ToString
                }
                else
                {
                    if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, tsmi1.DropDownItems[j].Tag.ToString()))
                    {
                         tsmi1.DropDownItems[j].Visible = true;
                    }
                    else tsmi1.DropDownItems[j].Visible = false;

                }
            for (int i = 2; i <= 6; i++)
            {
                this.menuStrip1.Items[i].Visible = false;
                Type t = this.menuStrip1.Items[i].GetType();
                if (t.Name != "ToolStripSeparator")
                {
                    ToolStripMenuItem tsmi = (ToolStripMenuItem)this.menuStrip1.Items[i];
                    for (int j = 0; j < tsmi.DropDownItems.Count; j++)
                        //tsmi.DropDownItems[j].Visible = false;
                        if (tsmi.DropDownItems[j].Tag == null)
                        {
                            tsmi.DropDownItems[j].Visible = true;
                            this.menuStrip1.Items[i].Visible = true;
                        }
                        else
                        {
                            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, tsmi.DropDownItems[j].Tag.ToString()))
                            {
                                tsmi.DropDownItems[j].Visible = true;
                                this.menuStrip1.Items[i].Visible = true;
                            }
                            else tsmi.DropDownItems[j].Visible = false;

                        }
                }
            }
        }

        private void saoLưuHệThốngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.CTyThuHo.FrmDMCongTyThuHo.FunctionKey))
            //{
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.frmBackup)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.frmBackup frmNew = new BBMS.DLL.Forms.frmBackup();
            frmNew.MdiParent = this;
            frmNew.Show();
            //}
            //else
            //{
            //    MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            //}
        }

        private void khôiPhụcDữLiệuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.frmRestore)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.frmRestore frmNew = new BBMS.DLL.Forms.frmRestore();
            frmNew.MdiParent = this;
            frmNew.Show();
        }

        private void phânQuyềnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.frmAuthorizationUpdate)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.frmAuthorizationUpdate frmNew = new BBMS.DLL.Forms.frmAuthorizationUpdate();
            frmNew.MdiParent = this;
            frmNew.Show();
        }

        private void danhMucNganhHangToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Catalog.Branch.frmBranchFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.Branch.frmBranchFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.Branch.frmBranchFilter frmNew = new BBMS.DLL.Forms.Catalog.Branch.frmBranchFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void danhMucQuayToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Catalog.Counter.frmCounterFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.Counter.frmCounterFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.Counter.frmCounterFilter frmNew = new BBMS.DLL.Forms.Catalog.Counter.frmCounterFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void danhMucNhaCungCapToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                BBMS.DLL.Forms.Catalog.Supplier.frmSupplierFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.Supplier.frmSupplierFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.Supplier.frmSupplierFilter frmNew = new BBMS.DLL.Forms.Catalog.Supplier.frmSupplierFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void danhMụcNhânViênToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.Catalog.User.frmUserFilter)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.Catalog.User.frmUserFilter frmNew = new BBMS.DLL.Forms.Catalog.User.frmUserFilter();
            frmNew.MdiParent = this;
            frmNew.Show();
        }

        private void hoaDonNhapToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                BBMS.DLL.Forms.Bill.Import.frmImportFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Bill.Import.frmImportFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Bill.Import.frmImportFilter frmNew = new BBMS.DLL.Forms.Bill.Import.frmImportFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void danhMucLoaiNhaCungCapToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                BBMS.DLL.Forms.Catalog.SupplierType.frmSupplierTypeFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.SupplierType.frmSupplierTypeFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.SupplierType.frmSupplierTypeFilter frmNew = new BBMS.DLL.Forms.Catalog.SupplierType.frmSupplierTypeFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void hoaDonXuatToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                            BBMS.DLL.Forms.Bill.Export.frmExportFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Bill.Export.frmExportFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Bill.Export.frmExportFilter frmNew = new BBMS.DLL.Forms.Bill.Export.frmExportFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void chungTuThuhoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                            BBMS.DLL.Forms.Bill.Collector.frmCollectorFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Bill.Collector.frmCollectorFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Bill.Collector.frmCollectorFilter frmNew = new BBMS.DLL.Forms.Bill.Collector.frmCollectorFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void chungTuThucamKetThuongMaiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                            BBMS.DLL.Forms.Bill.Agreement.frmAgreementFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Bill.Agreement.frmAgreementFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Bill.Agreement.frmAgreementFilter frmNew = new BBMS.DLL.Forms.Bill.Agreement.frmAgreementFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void chungTuThuChietkhauToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                            BBMS.DLL.Forms.Bill.Discount.frmDiscountFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Bill.Discount.frmDiscountFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Bill.Discount.frmDiscountFilter frmNew = new BBMS.DLL.Forms.Bill.Discount.frmDiscountFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void danhMụcLoạiChứngTừToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read,
                            BBMS.DLL.Forms.Bill.Discount.frmDiscountFilter.FunctionKey))
            {
                foreach (Form frm in this.MdiChildren)
                {
                    if (frm is BBMS.DLL.Forms.Catalog.BillType.frmBillTypeFilter)
                    {
                        frm.BringToFront();
                        return;
                    }
                }
                BBMS.DLL.Forms.Catalog.BillType.frmBillTypeFilter frmNew = new BBMS.DLL.Forms.Catalog.BillType.frmBillTypeFilter();
                frmNew.MdiParent = this;
                frmNew.Show();
            }
            else
            {
                MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            }
        }

        private void tùyChọnThanhToánToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //             if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Function.frmPaymentOption.FunctionKey))
            //             {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.Function.frmPaymentOption)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.Function.frmPaymentOption frmNew = new BBMS.DLL.Forms.Function.frmPaymentOption();
            frmNew.MdiParent = this;
            frmNew.Show();
            //             }
            //             else
            //             {
            //                 MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            //             }
        }

        private void toolStripMenuItem5_Click(object sender, EventArgs e)
        {
            //             if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Sys.frmResetPassword.FunctionKey))
            //             {
            //foreach (Form frm in this.MdiChildren)
            //{
            //    if (frm is BBMS.DLL.Forms.Sys.frmResetPassword)
            //    {
            //        frm.BringToFront();
            //        return;
            //    }
            //}
            //BBMS.DLL.Forms.Sys.frmResetPassword frmNew = new BBMS.DLL.Forms.Sys.frmResetPassword();
            //frmNew.MdiParent = this;
            //frmNew.Show();
            //             }
            //             else
            //             {
            //                 MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
            //             }
        }

        private void báoCáoThôngTinDanhMụcToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void doiMatKhauToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //             if (BBMS.DLL.Base.Config.CurUser.HaveRole(BBMS.DLL.Base.Role.Read, BBMS.DLL.Forms.Sys.frmResetPassword.FunctionKey))
            //             {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.Sys.frmResetPassword)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.Sys.frmResetPassword frmNew = new BBMS.DLL.Forms.Sys.frmResetPassword();
            frmNew.MdiParent = this;
            frmNew.Show();
            //             }
            //             else
            //             {
            //                 MessageBox.Show("Bạn không có quyền truy cập vào chức năng này.");
        }

        private void toolStripMenuItem7_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.Sys.frmDbParameter)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.Sys.frmDbParameter frmNew = new BBMS.DLL.Forms.Sys.frmDbParameter();
            frmNew.MdiParent = this;
            frmNew.Show();

        }

        private void thôngTinVềChươngTrìnhToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is frmHelpProgramInfo)
                {
                    frm.BringToFront();
                    return;
                }
            }
            frmHelpProgramInfo frmNew = new frmHelpProgramInfo();
            frmNew.MdiParent = this;
            frmNew.Show();
        }

        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.frmUserCounter)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.frmUserCounter frmNew = new BBMS.DLL.Forms.frmUserCounter();
            frmNew.MdiParent = this;
            frmNew.Show();

        }

        private void NhatKyHTtoolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is BBMS.DLL.Forms.Catalog.NhatKyHT.frmLogFilter)
                {
                    frm.BringToFront();
                    return;
                }
            }
            BBMS.DLL.Forms.Catalog.NhatKyHT.frmLogFilter frmNew = new BBMS.DLL.Forms.Catalog.NhatKyHT.frmLogFilter();
            frmNew.MdiParent = this;
            frmNew.Show();
        }
    }
}
